/**
 * System:      oshys
 * Model:       core
 * Licence:     GNU General Public License v3
 * Author:      qingkang
 * Date:        2010/04/04
 */
package org.oshys;

/**
 * 模块生命周期接口,此接口主要用于模块的扩展.
 * oshys从配置文件中读取模块实现类的信息（特别是类名），启动/停止的时候把所有实现lifecycle接口的模块都启动/停止.
 * 
 * <p> 模块扩展时，做以下两个工作便可.
 * <ul>
 * <li>定义一个该接口的实现类，实现类自由控制自己需要完成的工作.
 * <li>在配置文件中描述一下模块的实现类（特别是类名）.
 * </ul>
 * <p> 比如支持Servlet,动态脚本的模块需要实现此接口.
 * @author qingkang
 *
 */
public interface Lifecycle {
	
	/**
	 * 初始化
	 * @throws Exception 出现影响到模块功能的错误，需要抛出异常.
	 */
	public void init() throws Exception;
	
	/**
	 * 启动
	 * @throws Exception 出现影响到模块功能的错误，需要抛出异常.
	 */
	public void startup() throws Exception;
	
	/**
	 * 停止，这里通常是正常的停止动作
	 * @throws Exception 出现影响到模块功能的错误，需要抛出异常.
	 */
	public void stop() throws Exception;
	
	/**
	 * shutdown一般用于完成需要强制执行的清理工作.
	 * @throws Exception 出现影响到模块功能的错误，需要抛出异常.
	 */
	public void shutdown() throws Exception;

}
